The present invention relates to a method for software and data transfer between computers, and more particularly to migrating software and data, including configuration data, from a present computer system to a second computer system.
As used herein, migration should be understood to encompass the process of replicating the functionality or capability in the second computer, and not the cloning, as such, of software and data. Thus, the process of transporting only a user's data files associated with a particular software product to a second computer that already has, or will have, a version of that software product installed is the same as also having transported the software product. Also, as used herein, references to a “current” computer means the first or original computer and references to “another” or “new” computer means a second computer to which a user wishes to migrate. The word “new” is not intended to mean only a computer which was previously unused by anyone, but rather that it is the terminus of the migration which begins with the “current” computer. Thus, a “new” computer can be previously used, and can even have been previously used by the individual utilizing the migration process.
Also, it should be understood that the term “software product” as used herein means an executable program, program libraries, installation files, configuration data, and ancillary programs including a suite of such items, shareware, freeware, & user written software.
A computer user might need to migrate from one computer to another for a variety of reasons such as (but not limited to):                (1) the user has purchased a new computer;        (2) the current computer is being repaired and the second one is a “loaner”. In this case, there is a subsequent need to migrate back to the original;        (3) the user has need for a second computer at another location; or        (4) the user has a portable computer in addition to their original computer.        
A computer user replacing his present system with another one faces an awkward and intractable problem: transferring important software and data from the current computer to the new one completely, without violating any software licenses and without unintentionally overwriting or corrupting newer versions of the same software. This problem typically arises in a graphical user interface environment such as a personal computer (PC) running a Microsoft WINDOWS operating system (such as Windows 3.1, Windows 95, Windows 98, Windows 2000, Windows NT, or any successor operating system), hereinafter referred to simply as “WINDOWS” or “Windows.” References made herein to “operating system” include WINDOWS as well as other operating systems.
The important software and data requiring transfer falls into three broad categories as follows.
(1) Operational data settings that affect the operation of one or several programs. For example, parameters governing the operation of a modem, Internet access information such as telephone numbers, user IDs, passwords, etc., user-specific defaults for the operation of applications such as word processors and spreadsheets, national language and currency preferences, and the like.
(2) User data files or records that are typically explicitly created by a user and contain data of interest to the user. For example, electronic documents created by the user in a word processor, electronic mail system, etc., electronic spreadsheets, contact information created in a contact manager, personal financial information created in a financial management system, and Internet “bookmarks” (i.e., address information of World Wide Web sites saved by the user).
In practice, data in these first two categories are often stored in separate files. For example, a word processor typically stores some data affecting how a document is to be processed in a file a user would consider to be his own user data—the document file itself. Conversely, an electronic mail system may use a single file to store many types of data including operational data, the user's electronic mail messages and address book, etc.
(3) Programs such as directly executable software or installation files for software products. Not all of the software programs the user may want to use and is entitled to use on the new system may be preinstalled on that system. In some cases, a user may have the original distribution media such as the compact disc (CD), diskette, etc., for some software products on the current system and can therefore reinstall them on the new computer. In other cases, however, the software may have been downloaded from an Internet Web site, received via electronic mail or transferred directly from another computer. In still other cases, bug fixes and upgrades may have been applied to the executable files on the user's system after the product was installed such that the user's distribution media no longer contains the current version of the product. In all of these cases it is necessary for the user to ultimately decide how each software product and data is to be migrated to the new computer.
There is no convenient and reliable way available to users to transfer all such information in an orderly fashion when moving from the present computer to a new one. There are several reasons for this problem, described as follows.
(1) The user cannot simply copy and move, i.e. clone, all the files from the present computer. There are a variety of reasons contributing to this, including:                (a) the files include software products already installed on the new system. The files on the new system represent a more recent version or a successor product which cannot be replaced. For example, the new system might have the latest version of WINDOWS installed and therefore, copying some or all of the WINDOWS-related files from the present computer would corrupt WINDOWS on the new computer;        (b) the files include data pertaining to hardware on the current system but not on the new one;        (c) the directory structure on the new system may not be the same as on the current one; or        (d) the user may not have licensing rights to move the software to a new system.        
(2) The user may not know which files to move. Software products store information in a variety of files and in a variety of formats without informing the user that they are doing so, where the files are stored, etc.
(3) The relevant information is sometimes stored in files which are normally hidden from the user and whose structure and contents are undocumented. The WINDOWS registry is such an example.
(4) The relevant information (data to be migrated) is sometimes stored in files which also include information the user would not want moved to the new system. This might be the case where the files contain information about a version of a product not installed on the new system.
(5) Users can create their own files and records with a great deal of freedom as to name and location such that a user might lose track of where they are stored and that they need to be moved.
(6) Users can receive such relevant files from a variety of sources, and might not remember that they need to be migrated to the new machine.
(7) Users can move and rename files freely.
(8) In many cases, software products themselves cannot simply be copied and moved as physical files. Some software products must be installed via an operating system interface so that the products are properly known to the operating system. This is particularly the case for programs which operate with WINDOWS.
(9) The computer can be shared by several users, each of whom has different settings, use different software products, and has different data associated with each of the products.
There are some products that may be regarded as related in some way to the present invention. A few products that may be regarded as related are discussed briefly below.
DRIVECOPY (POWERQUEST): According to vendor's product literature, “DRIVECOPY(tm) 2.0 by POWERQUEST is an easy to use utility for copying an old drive to a new drive. With a few simple steps the old hard drive is automatically copied to the new one without losing a single preference, setting or byte of data.”
The problem with this type of product is that cloning a hard drive is most suitable for situations where a complete move to a new or temporary computer is necessary. This product produces an exact clone, including all software, settings, etc, whether needed or not. It does not provide for the installation of software products, license transfers, changes in program settings, i.e., the WINDOWS registry, segregation by user, and synchronization of data files (if a reverse move is required).
NORTON GHOST (SYMANTEC): NORTON GHOST provides disk cloning. It “works by creating an exact image of a PC's hard drive, effectively taking a “snapshot” of all the files—hidden, visible, and active—that make up the operating system, applications, and configuration settings. The image can then be copied to any number of PCs, thereby creating completely identical installations.”
Here too, this product is most effective in cloning a new system and not for migrating software and data in an orderly manner. NORTON GHOST has the same disadvantages as those described with respect to POWERQUEST'S DRIVECOPY.
LAPLINK PRODUCTS (TRAVELING SOFTWARE): TRAVELING SOFTWARE markets a number of related products for file transfer and remote access. For example, “LapLink Professional frees you to maximize productivity wherever you are, by providing complete access to your office PC.” LAPLINK PROFESSIONAL is “remote control and file transfer software.”
This product is intended to provide file transfer capabilities to a user. However, the user is ultimately responsible for determining which files should be transferred, synchronization with out-of-date data files, etc. The product does not transfer any settings or personalization not kept in files, such as information in the WINDOWS registry. The transfer and successful reinstallation of software products is problematic for all of the reasons previously mentioned. Licensing is also not addressed by this product.
JAVA SERIALIZATION: “To serialize an object means to convert its state into a byte stream in such a way that the byte stream can be reverted back into a copy of the object. A Java object is serializable if its class or any of its superclasses implements either the java.io.Serializable interface or its subinterface java.io.Externalizable. Deserialization is the process of converting the serialized form of an object back into a copy of the object.”
Serialization is a good method for enabling file transfer and archival of objects of different content and format. This too does not take into account the previously mentioned special considerations which are necessary to migrate software products.
UNINSTALLERS: Some uninstallers such as UNINSTALLER DELUXE by MCAFEE provide some capability to “uninstall” a product from one computer and then reinstall the product on another computer. To do so, such an uninstaller relies on information placed by software products in the WINDOWS registry. Such functionality is very much an afterthought for such products, and is very limited. Because the information placed in the WINDOWS registry is not architected for the purpose of uninstalling and reinstalling, this information is not complete or reliable. If the user has moved his settings data out of the subdirectory (folder) that contains the executable program files themselves, the uninstaller will likely be unable to find and move such data. Also, these types of uninstallers are not designed to handle all of the products, or a user-specified set of products, installed on a computer at one time. Rather, these products are only capable of handling uninstallation on a product-by-product basis. In addition, current uninstallers are not designed to handle the user's data files associated with the product being uninstalled.
Other uninstallers, such as NORTON CLEANSWEEP DELUXE by SYMANTEC and REMOVE-IT 98 by QUARTERDECK, are designed to provide clean-up and system tuning functions by removing unnecessary files and programs and correcting erroneous system configuration data. These types of uninstallers rely heavily upon the WINDOWS registry and the conventions established for installing and using WINDOWS software. Therefore, the handling of questionable files results in the user being required to make the final decision to proceed.
UPDATERS: Software products such as OIL CHANGE by MCAFEE are intended to use the Internet to determine whether updates are available for various installed software products. “Oil Change finds these updates from all over the Internet and installs them for you automatically.” To do so, such a product relies on information placed by software products in the WINDOWS registry and conventions established for using such software. Such functionality is very much an afterthought for such products, and is very limited. Because the information placed in the WINDOWS registry is not architected for the purpose of version control, this information is not complete or reliable. Some software products create their own private registries, in which case the updater will likely be unable to find and update such data if the user has moved his settings data out of the subdirectory (folder) that contains the executable program files themselves.
Thus, there are numerous reasons why migrating from a current computer system to another one is problematic. It is desirable to have a system and process to ease migration from one computer to another.